package cn.iocoder.yudao.module.ao.controller.admin.patrol.vo;

import lombok.*;

import java.time.LocalDate;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;

import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;

@Schema(description = "管理后台 - 巡班违纪记录分页 Request VO")
@Data
public class PatrolPageReqVO extends PageParam {

    @Schema(description = "上课日期")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDate[] classDate;

    @Schema(description = "上课时间段（如 08:00-09:40）")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private String[] classTime;

    @Schema(description = "课程名称", example = "芋艿")
    private String courseName;

    @Schema(description = "授课老师ID（关联教师表）", example = "8473")
    private Long teacherId;

    @Schema(description = "授课老师姓名", example = "张三")
    private String teacherName;

    @Schema(description = "巡班老师ID（关联巡班人员表）", example = "14738")
    private Long patrolTeacherId;

    @Schema(description = "巡班老师姓名", example = "赵六")
    private String patrolTeacherName;

    @Schema(description = "教室名称")
    private String classroom;

    @Schema(description = "违纪类型（如迟到、玩手机）", example = "1")
    private String violationType;

    @Schema(description = "违纪详细描述")
    private String violationDesc;

    @Schema(description = "违纪人数", example = "29804")
    private Integer violationCount;

    @Schema(description = "处理状态（0-未处理，1-已处理）", example = "1")
    private Integer status;

    @Schema(description = "创建时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] createTime;

    // ========== 权限控制字段(内部使用,不暴露给前端) ==========
    
    @Schema(description = "教师姓名(内部权限控制-授课老师)", hidden = true)
    private String currentTeacherName;

    @Schema(description = "教室列表(内部权限控制-班主任的班级教室)", hidden = true)
    private List<String> classrooms;

}